
var store_combo;
var store_editor;

Ext.onReady(function()
{
    store_combo = new X.store.Json({
        fields : [
            'codigoFuncionalidad',
            'nombreFuncionalidad'
        ]
    });

    store_editor = new X.store.Json({
        fields : [
            'codigoFuncionalidad'
        ]
    });

    var combo = new X.field.Combo ({
        fieldLabel   : 'Combo',
        valueField   : 'codigoFuncionalidad',
        displayField : 'nombreFuncionalidad',
        width        : 230,
        store        : store_combo
    });

    var grid = new X.grid.GridEditor({

        id       : 'editor',
        height   : 250,
        width    : 300,
        store    : store_editor,

        columns:[
            new X.column.Combo({header: 'Nombre', dataIndex: 'codigoFuncionalidad', width: 279, editor:combo})
        ]
    });

    var form = new X.form.FormPanel({

        title            : 'Editar Perfil',
        submitButtonText : 'Guardar',
        returnButtonText : 'Cancelar',
        submitUrl        : '/perfil/ajax-editar',
        returnUrl        : '/perfil/listar',
        width            : 400,
        labelWidth       : 70,

        items:[
            new Ext.form.FieldSet({title:'Perfil',items:
            [
                new X.field.Hidden({                         id:'editorRows'             }),
                new X.field.Hidden({                         id:'codigoPerfil'           }),
                new X.field.Text  ({fieldLabel:'Nombre',     id:'nombrePerfil', width:230}),
            ]}),
            new Ext.form.FieldSet({title:'Funcionalidades',items:
            [
                grid
            ]})
        ]
    });

     form.getForm().addListener('beforeaction', function(form, action){
        if (Ext.isEmpty(Ext.getCmp('nombrePerfil').getValue())){
            X.msg.Failure('Complete el campo "Nombre"'); return false;
        }
        if (store_editor.getCount() <= 0){
            X.msg.Failure('Agregue al menos una funcionalidad'); return false;
        }
        for (var i=0; i<store_editor.getCount(); i++){
            var record = store_editor.getAt(i);
            if (Ext.isEmpty(record.get('codigoFuncionalidad'))){
                X.msg.Failure('La ' + (i+1) + '° funcionalidad está vacía.'); return false;
            }
        }
        return true;
    });
});